package com.enjoyor.soa.traffic.api.service.dubbo.redis;


import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface DubboRedisSortSetService {
	/**
	 * 
	 * @Title: zadd
	 * @Description: 向有序集合添加一个或多个成员，或者更新已存在成员的分数
	 * @param key
	 * @param score
	 * @param member
	 * @return
	 * @return: boolean
	 */
	public ResultPojo zadd(String key, double score, Object member);
	
	/**
	 * 
	 * @Title: zcard
	 * @Description: 获取有序集合的成员数
	 * @param key
	 * @return
	 * @return: long
	 */
	public ResultPojo zcard(String key);
	
	/**
	 * 
	 * @Title: zcount
	 * @Description: 计算在有序集合中指定区间分数的成员数
	 * @param key
	 * @param min
	 * @param max
	 * @return
	 * @return: long
	 */
	public ResultPojo zcount(String key, double min, double max);
	
	/**
	 * 
	 * @Title: zincrby
	 * @Description: 有序集合中对指定成员的分数加上增量 increment
	 * @param key
	 * @param increment
	 * @param member
	 * @return
	 * @return: double
	 */
	public ResultPojo zincrby(String key, double increment, String member);
	
	/**
	 * 
	 * @Title: zinterstore
	 * @Description: 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
	 * @param key
	 * @param otherKeys
	 * @param destKey
	 * @return
	 * @return: long
	 */
	public ResultPojo zinterstore(String key, String[] otherKeys, String destKey);
	
	/**
	 * 
	 * @Title: zrange
	 * @Description: 通过索引区间返回有序集合成指定区间内的成员
	 * @param key
	 * @param start
	 * @param end
	 * @return
	 * @return: Set<Object>
	 */
	public ResultPojo zrange(String key, int start, int end);
	
	/**
	 * 
	 * @Title: zrangeByScore
	 * @Description: 通过分数返回有序集合指定区间内的成员
	 * @param key
	 * @param min
	 * @param max
	 * @return
	 * @return: Set<Object>
	 */
	public ResultPojo zrangeByScore(String key, double min, double max);
	
	/**
	 * 
	 * @Title: zrank
	 * @Description: 返回有序集合中指定成员的索引
	 * @param key
	 * @param member
	 * @return
	 * @return: long
	 */
	public ResultPojo zrank(String key, Object member);
	
	/**
	 * 
	 * @Title: zrem
	 * @Description: 移除有序集合中的一个或多个成员
	 * @param key
	 * @param member
	 * @return
	 * @return: long
	 */
	public ResultPojo zrem(String key, Object member);
	
	/**
	 * 
	 * @Title: zremRange
	 * @Description: 移除有序集合中给定的字典区间的所有成员
	 * @param key
	 * @param start
	 * @param end
	 * @return
	 * @return: long
	 */
	public ResultPojo zremRange(String key, long start, long end);
	
	/**
	 * 
	 * @Title: zrevrange
	 * @Description: 返回有序集中指定区间内的成员，通过索引，分数从高到底
	 * @param key
	 * @param start
	 * @param end
	 * @return
	 * @return: Set<Object>
	 */
	public ResultPojo zrevrange(String key,  long start, long end);
	
	/**
	 * 
	 * @Title: zrevrank
	 * @Description: 返回有序集合中指定成员的排名，有序集成员按分数值递减(从大到小)排序
	 * @param key
	 * @param member
	 * @return
	 * @return: Long
	 */
	public ResultPojo zrevrank(String key, Object member);
	
	/**
	 * 
	 * @Title: zrevrangeByScore
	 * @Description: 返回有序集中指定分数区间内的成员，分数从高到低排序
	 * @param key
	 * @param min
	 * @param max
	 * @return
	 * @return: Set<Object>
	 */
	public ResultPojo zrevrangeByScore(String key,  double min, double max);
	
	/**
	 * 
	 * @Title: zscore
	 * @Description: 返回有序集中，成员的分数值
	 * @param key
	 * @param member
	 * @return
	 * @return: Double
	 */
	public ResultPojo zscore(String key, Object member);
	
	/**
	 * 
	 * @Title: zunionstore
	 * @Description: 计算给定的一个或多个有序集的并集，并存储在新的 key 中
	 * @param key
	 * @param otherKeys
	 * @param destKey
	 * @return
	 * @return: Long
	 */
	public ResultPojo zunionstore(String key, String[] otherKeys, String destKey);
}
